# include <bits/stdc++.h>
# define N 10000005
# define mod 998244353
using namespace std;
int n,m,A,B,C,M,a[N];
int num[N];
int sum[N];
long long qpow(long long x,int y)
{
    long long ans=1;
    while(y)
    {
        if(y&1)
            ans=ans*x%mod;
        x=x*x%mod;
        y>>=1;
    }
    return ans;
}
struct node
{
    long long x,y;
    bool operator <(const node a)const
    {
        return x*a.y<y*a.x;
    }
    bool operator >(const node a)const
    {
        return x*a.y>y*a.x;
    }
    long long get()
    {
        return x*qpow(y,mod-2)%mod;
    }
};
node solve(int l,int r,bool flag)
{
    node ans={(r-l+1),(sum[r]-sum[l-1]-2)};
    if(ans.y<=ans.x*2)
        return ans;
    if(!flag)
        for(int i=l;i<r;i++)
        {
            node now={(i-l+1),(sum[i]-sum[l-1])};
            if(sum[i]-sum[l-1]-2)
                ans=min(ans,{(i-l+1),(sum[i]-sum[l-1]-2)});
            if(now>ans)
                return min(ans,solve(i+1,r,0));
        }
    for(int i=r;i>l;i--)
    {
        node now={(r-i+1),(sum[r]-sum[i-1])};
        if(sum[r]-sum[i-1]-2)
            ans=min(ans,{(r-i+1),(sum[r]-sum[i-1]-2)});
        if(now>ans)
            return min(ans,solve(l,i-1,1));
    }
    return ans;
}
void solve()
{
    cin>>n>>a[0]>>A>>B>>C>>M;
    for(int i=1;i<=n;i++)
        a[i]=(1ll*a[i-1]*a[i-1]%M*A+1ll*a[i-1]*B+C)%M+1;
    for(int i=1;i<=n;i++)
        num[i]=0;
    for(int i=1;i<=n;i++)
        num[a[i]]++;
    m=0;
    for(int i=1;i<=n;i++)
        if(num[i])
            a[++m]=min(num[i],2);
    for(int i=1;i<=m;i++)
        sum[i]=sum[i-1]+2+(a[i]==2);
    cout<<0<<' '<<solve(1,m,0).get()<<endl;
}
int main()
{
    freopen("guess.in","r",stdin);
    freopen("guess.out","w",stdout);
    int T;
    cin>>T;
    while(T--)
        solve();
    return 0;
}